package com.vf.admin.utils.zhuanpan;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class Lottery {

//    public static int drawGift(List<AppJiangPin> jiangPinList){
//
//        if(null != jiangPinList && jiangPinList.size()>0){
//            List<Double> orgProbList = new ArrayList<Double>(jiangPinList.size());
//            for(AppJiangPin jiangPin : jiangPinList){
//                //按顺序将概率添加到集合中
//                orgProbList.add(jiangPin.getJilv());
//            }
//
//            return draw(orgProbList);
//
//        }
//        return -1;
//    }

    public static int draw(List<Double> giftProbList){

        List<Double> sortRateList = new ArrayList<Double>();

        // 计算概率总和
        Double sumRate = 0D;
        for(Double prob : giftProbList){
            sumRate += prob;
        }

        if(sumRate != 0){
            double rate = 0D;   //概率所占比例
            for(Double prob : giftProbList){
                rate += prob;
                // 构建一个比例区段组成的集合(避免概率和不为1)
                sortRateList.add(rate / sumRate);
            }

            // 随机生成一个随机数，并排序
            double random = Math.random();
            sortRateList.add(random);
            Collections.sort(sortRateList);

            // 返回该随机数在比例集合中的索引
            return sortRateList.indexOf(random);
        }


        return -1;
    }


    public static void main(String[] args) {
//        Gift iphone = new Gift();
//        iphone.setId(101);
//        iphone.setName("苹果手机");
//        iphone.setProb(0.01D);
//
//        Gift thanks = new Gift();
//        thanks.setId(102);
//        thanks.setName("再接再厉");
//        thanks.setProb(80D);
//
//        Gift vip = new Gift();
//        vip.setId(103);
//        vip.setName("优酷会员");
//        vip.setProb(0.01D);
//
//        List<Gift> list = new ArrayList<Gift>();
//        list.add(vip);
//        list.add(thanks);
//        list.add(iphone);
//
//        for(int i=0;i<10000;i++){
//            int index = drawGift(list);
//            if (!list.get(index).getName().equals("再接再厉")){
//                System.out.println(list.get(index).getName());
//            }
//        }
    }


}
